import { Service } from 'egg';
import {
  IHttpGetParams,
  IHttpPostData,
  IQueryData,
  MODELS,
  SUBJECTS,
  TEST_TYPES
} from '../../typings';

export default class Api extends Service {
  public async getQueries({
    subject,
    model
  }: IHttpPostData): Promise<IQueryData[]> {
    const { ctx } = this;

    /**
     * 有可能前端没有传入这些参数，对参数进行有效判断
     * subject: 选择考试科目类型，1：科目1；4：科目4
     * model: 驾照类型，可选择参数为：c1,c2,a1,a2,b1,b2；
     * testType: 测试类型，rand：随机测试（随机100个题目）
     */
    const _subject: SUBJECTS = subject || SUBJECTS.s1;
    const _model: MODELS = model || MODELS.c1;
    const _testType: TEST_TYPES = TEST_TYPES.rand;

    //向聚合数据API发起HTTP请求 用对象的方式传递参数
    return ctx.httpGet(<IHttpGetParams>{
      url: '/query',
      data: <IHttpPostData>{
        subject: _subject,
        model: _model,
        testType: _testType
      },
      success(data) {
        return data;
      },
      fail(err) {
        throw new Error('Request failed' + err);
      }
    });
  }
}
